/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Service;

import DB.FichaPediatra;
import DB.HibernateUtil;
import java.util.List;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import org.hibernate.Criteria;

/**
 *
 * @author Jacqueline
 */
@WebService()
public class FichaPediatraWS {

    @WebMethod(operationName = "agregarFichaPediatra")
    public Long agregarFichaPediatra(@WebParam(name = "paciente") String paciente,
            @WebParam(name = "profesional") String profesional,
            @WebParam(name = "nombrePadre") String nombrePadre,
            @WebParam(name = "nombreMadre") String nombreMadre,
            @WebParam(name = "patologiaEmbarazo") String patologiaEmbarazo,
            @WebParam(name = "controlado") boolean controlado,
            @WebParam(name = "tipoParto") String tipoParto,
            @WebParam(name = "pesoNacimiento") String pesoNacimiento,
            @WebParam(name = "talla") String talla,
            @WebParam(name = "eg") String eg,
            @WebParam(name = "cc") String cc,
            @WebParam(name = "desarrolloSicomotor") String desarrolloSicomotor,
            @WebParam(name = "vacunacionesPai") String vacunacionesPai,
            @WebParam(name = "otrasVacunaciones") String otrasVacunaciones,
            @WebParam(name = "antecedentesFamiliares") String antecedentesFamiliares,
            @WebParam(name = "patologiasCronicas") String patologiasCronicas,
            @WebParam(name = "hospitalizaciones") String hospitalizaciones,
            @WebParam(name = "anamnesisInmediata") String anamnesisInmediata,
            @WebParam(name = "activo") boolean activo) {

        DB.FichaPediatra ficha = new DB.FichaPediatra();
        ficha.setPaciente(paciente);
        ficha.setProfesional(profesional);
        ficha.setNombrePadre(nombrePadre);
        ficha.setNombreMadre(nombreMadre);
        ficha.setPatologiaEmbarazo(patologiaEmbarazo);
        ficha.setControlado(controlado);
        ficha.setTipoParto(tipoParto);
        ficha.setPesoNacimiento(pesoNacimiento);
        ficha.setTalla(talla);
        ficha.setEg(eg);
        ficha.setCc(cc);
        ficha.setDesarrolloSicomotor(desarrolloSicomotor);
        ficha.setVacunacionesPai(vacunacionesPai);
        ficha.setOtrasVacunaciones(otrasVacunaciones);
        ficha.setAntecedentesFamiliares(antecedentesFamiliares);
        ficha.setPatologiasCronicas(patologiasCronicas);
        ficha.setHospitalizaciones(hospitalizaciones);
        ficha.setAnamnesisInmediata(anamnesisInmediata);
        ficha.setActivo(activo);

        ControladorDeObjetos.saveObject(ficha);
        return ficha.getId();
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "listarFichasPediatra")
    public List<FichaPediatra> listarFichasPediatra() {
        return ControladorDeObjetos.getAllObjectByClassType(FichaPediatra.class);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "cargarFichaPediatra")
    public Object cargarFichaPediatra(@WebParam(name = "Id") Long Id){
        return ControladorDeObjetos.loadObjectByLongId(Id, FichaPediatra.class);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "modificarFichaPediatra")
    public boolean modificarFichaPediatra(@WebParam(name = "Id") Long Id,
            @WebParam(name = "paciente") String paciente,
            @WebParam(name = "profesional") String profesional,
            @WebParam(name = "nombrePadre") String nombrePadre,
            @WebParam(name = "nombreMadre") String nombreMadre,
            @WebParam(name = "patologiaEmbarazo") String patologiaEmbarazo,
            @WebParam(name = "controlado") boolean controlado,
            @WebParam(name = "tipoParto") String tipoParto,
            @WebParam(name = "pesoNacimiento") String pesoNacimiento,
            @WebParam(name = "talla") String talla,
            @WebParam(name = "eg") String eg,
            @WebParam(name = "cc") String cc,
            @WebParam(name = "desarrolloSicomotor") String desarrolloSicomotor,
            @WebParam(name = "vacunacionesPai") String vacunacionesPai,
            @WebParam(name = "otrasVacunaciones") String otrasVacunaciones,
            @WebParam(name = "antecedentesFamiliares") String antecedentesFamiliares,
            @WebParam(name = "patologiasCronicas") String patologiasCronicas,
            @WebParam(name = "hospitalizaciones") String hospitalizaciones,
            @WebParam(name = "anamnesisInmediata") String anamnesisInmediata,
            @WebParam(name = "activo") boolean activo) {

        FichaPediatra ficha = (FichaPediatra) ControladorDeObjetos.loadObjectByLongId(Id,FichaPediatra.class);
        ficha.setPaciente(paciente);
        ficha.setProfesional(profesional);
        ficha.setNombrePadre(nombrePadre);
        ficha.setNombreMadre(nombreMadre);
        ficha.setPatologiaEmbarazo(patologiaEmbarazo);
        ficha.setControlado(controlado);
        ficha.setTipoParto(tipoParto);
        ficha.setPesoNacimiento(pesoNacimiento);
        ficha.setTalla(talla);
        ficha.setEg(eg);
        ficha.setCc(cc);
        ficha.setDesarrolloSicomotor(desarrolloSicomotor);
        ficha.setVacunacionesPai(vacunacionesPai);
        ficha.setOtrasVacunaciones(otrasVacunaciones);
        ficha.setAntecedentesFamiliares(antecedentesFamiliares);
        ficha.setPatologiasCronicas(patologiasCronicas);
        ficha.setHospitalizaciones(hospitalizaciones);
        ficha.setAnamnesisInmediata(anamnesisInmediata);
        ficha.setActivo(activo);

        return ControladorDeObjetos.updateObject(ficha);
    }

    @WebMethod(operationName = "modificarFichaPedi")
    public boolean modificarFichaPedi(@WebParam(name = "FichaPediatra")FichaPediatra fichaClinica) {
        return ControladorDeObjetos.updateObject(fichaClinica);
    }

    @WebMethod(operationName = "filtrarFichasPediatra")
    public List<FichaPediatra> filtrarFichasPediatra(@WebParam(name = "buscar") String buscar) {
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction trans = s.beginTransaction();
        Criteria c = s.createCriteria(FichaPediatra.class).add(Restrictions.or(Restrictions.or(Restrictions.ilike("paciente", "%" + buscar+ "%"),
                Restrictions.ilike("nombrePadre", "%" + buscar + "%")),
                Restrictions.or(Restrictions.ilike("nombreMadre", "%" + buscar + "%"),
                Restrictions.ilike("patologiaEmbarazo", "%" + buscar + "%")))
                );
        List l = c.list();
        s.close();
        return l;
    }

}
